1. Technical Field
The present invention relates to the field of network application services, and more particularly, to single threaded real-time audio streaming.
2. Description of the Related Art
International Business Machine Corporation's WebSphere Voice Server (WVS) is a collection of technologies that provide for the creation of voice based applications. It allows users to access voice-enabled Web applications through a telephone and allows software developers to enable voice services on Web applications. VoiceXML applications can be developed in WVS and hosted on an application server such as International Business Machine's WebSphere Application Server. The (WAS) is a Java based Web application server that supports the deployment and management of Web applications, ranging from simple Web sites to powerful e-business solutions. The integration of WVS technologies with the WAS provide for the development of powerful voice centric e-business solutions.
The WAS is based on the J2EE platform for building distributed enterprise applications. Most WebSphere applications written for J2EE use a model-view-controller architecture for separation of design concerns. One approach for enhancing the scalability and resiliency of the WAS is workload management which defines policies that dictate how requests are distributed to the applications. However, control is centralized, and underlying operational processes concerning the integration of WVS on WAS encounter challenges with regards to providing real-time delivery of audio in audio transaction based J2EE applications. In a real-time voice service supported by a WVS running on a WAS, audio must be delivered to a client in a continuous manner to avoid poor audio quality, else the audio is perceived as broken or choppy. Consistent delivery of audio concerning the media flow depends on the timing granularity. The timing granularity describes the accuracy and resolution by which the application and system can support timed services. The timing granularity can be limited by the application or the underlying operating system. In a voice streaming application, the WVS needs to send voice packets at fixed time intervals using a Real Time Protocol (RTP) to satisfy real-time demands of the client for continuous voice.
RTP provides end-to-end network transport functions suitable for applications transmitting real-time data, such as audio, video or simulation data, over network services. However, RTP does not address resource reservation and does not guarantee quality-of-service for real-time services. Multi-threaded approaches to increasing RTP efficiency involve assigning single processes (threads) to handle multiple media streams. Each thread can be responsible for handling delivery transmissions to the client without regard to the processing overhead consumed by other threads providing other media services. Each thread can consume Central Processing Unit time which affects the timing granularity available to all the threads. As more processes are added, more threads that require administrative overhead degrade the integrity of service quality.
Timer services in an operating system kernel can have the timing granularity to support RTP delivery for a few separate voice streaming applications. However, timing granularity degrades as more RTP traffic emerges which can reach a resolution limit when too many applications are running ensemble. Coordinating simultaneous processes consumes significant administrative overhead which costs time thereby sacrificing timing granularity. Accordingly, the timing services lack the granularity to support high volume RTP service for hundreds or thousands of voice streaming applications, and this results in poor audio quality. Workload management solutions which assign separate processes to handle each audio stream work well for low and high volume traffic that do not require real-time capabilities. For example, music streaming applications have minimal real-time constraints since music is one-way. However, voice streaming applications are limited by real-time constraints since conversations are usually two-way. During a voice dialogue, users expect to receive voice within a certain period of time, else they are disconcerted with the service quality. Therefore, a need exists to provide a solution that allows for the efficient delivery of voice based application services under multiple real-time continuous streaming service demands.